#include "queue.h"

//全局变量不允许让其他文件直接调用，所以使用static
//队列应用在中断模式，所以需要加volatile
static volatile uint8_t dataArr[128];	//数据池
static volatile uint16_t head;			//头索引
static volatile uint16_t tail;			//尾索引

//初始化
void queueInit(void)
{
	head = 0;
	tail = 0;
}

//清空
void queueClear(void)
{
	head = 0;
	tail = 0;
}

//压入一个数据
void queuePush(uint8_t data)
{
	dataArr[head] = data;	//插入数据
	head++;					//头索引+1
	
	if(head >= 128) {		//如果数据大于数组长度，则返回数组首位置
		head = 0;
	}
}

//弹出一个数据
uint8_t queuePull(void)
{
	uint8_t r = dataArr[tail];	//弹出数据	
	tail++;
	
	if(tail >= 128) {		//如果数据大于数组长度，则返回数组首位置
		tail = 0;
	}
	
	return r;
}



